import xmltodict
import json
import traceback
import os


class XmlDict():
    def __init__(self):
        pass

    #初始化数据，传入参数1、xml文件路径 2、xml格式字符串 3、json字符串 4、dict字典
    def _init_data(self,file_Str_Dict):
        if isinstance(file_Str_Dict,str) and os.path.isfile(file_Str_Dict):
            with open(file_Str_Dict) as fp:
                self.data=fp.read()
        elif isinstance(file_Str_Dict,(str,dict)):
            self.data=file_Str_Dict


    def xml_to_dict(self,file_Str_Dict):
        self._init_data(file_Str_Dict)
        data_orderedD=xmltodict.parse(self.data)
        data_json=json.dumps(data_orderedD,indent=4)
        data_dict=json.loads(data_json)

        return data_dict


    def dicttoxml(self,file_Str_Dict):
        self._init_data(file_Str_Dict)
        if isinstance(self.data,str):
            try:
                self.data=json.loads(self.data)
            except:
                print('传入参数非json或dict类型，无法转换。')
                traceback.print_exc()
                return None
        return xmltodict.unparse(self.data,pretty=True,encoding='utf-8')

